package map;

import java.util.*;

/**
 * Map的遍历，支持三种遍历方式：
 * 1.遍历所有的key
 * 2.遍历所有的value---不常用
 * 3.遍历所有的Entry(键值对)
 */
public class MapDemo3 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("语文",99);
        map.put("数学",100);
        map.put("英语",88);
        map.put("物理",96);
        map.put("化学",99);
        System.out.println(map);  //{物理=96, 数学=100, 化学=99, 语文=99, 英语=88}

        /*
            遍历所有的key
            Set<K> keySet()
            将当前map中所有的key以一个Set集合的形式返回
         */

        Set<String> keyset = map.keySet();
        for (String key : keyset){
            System.out.println("key:"+key);
        }
        System.out.println("---------------------------");
        /*
            遍历所有的value
            Collection<V> value()
            将当前map中的所有value以一个集合的形式返回
         */
        Collection<Integer> values = map.values();
        for (Integer value : values){
            System.out.println("value:"+value);
        }

        /*
        遍历所有的Entry(键值对)
        Set<Map.Entry<K,V>> entrySet()
        将当前map中的每一组键值对以一个Entry实例表示，并将所有键值对以Ser集合返回
         */
        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
        for (Map.Entry<String,Integer> e : entrySet){  //e代表每一个键值对
            String key = e.getKey();  //获取key的键
            Integer value = e.getValue();  //获取value的值
            System.out.println("key:"+key+"value:"+value);
        }

    }
}
